﻿namespace BarrageGameAssistant.Core.Utils
{
    public class ShortcutUtils
    {
        /// <summary>
        /// 创建一个快捷方式
        /// </summary>
        /// <param name="lnkFilePath">快捷方式的完全限定路径。</param>
        /// <param name="workDir"></param>
        /// <param name="args">快捷方式启动程序时需要使用的参数。</param>
        /// <param name="targetPath"></param>
        public static void CreateShortcut(string lnkFilePath, string targetPath, string workDir, string args = "")
        {
#pragma warning disable CA1416 // 验证平台兼容性
            var shellType = Type.GetTypeFromProgID("WScript.Shell");
#pragma warning restore CA1416 // 验证平台兼容性
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
#pragma warning disable CS8604 // 引用类型参数可能为 null。
            dynamic shell = Activator.CreateInstance(shellType);
#pragma warning restore CS8604 // 引用类型参数可能为 null。
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
#pragma warning disable CS8602 // 解引用可能出现空引用。
            var shortcut = shell.CreateShortcut(lnkFilePath);
#pragma warning restore CS8602 // 解引用可能出现空引用。
            shortcut.TargetPath = targetPath;
            shortcut.Arguments = args;
            shortcut.WorkingDirectory = workDir;
            shortcut.Save();
        }

        ///// <summary>
        ///// 读取一个快捷方式的信息
        ///// </summary>
        ///// <param name="lnkFilePath"></param>
        ///// <returns></returns>
        //public static ShortcutDescription ReadShortcut(string lnkFilePath)
        //{
        //    var shellType = Type.GetTypeFromProgID("WScript.Shell");
        //    dynamic shell = Activator.CreateInstance(shellType);
        //    var shortcut = shell.CreateShortcut(lnkFilePath);
        //    return new ShortcutDescription()
        //    {
        //        TargetPath = shortcut.TargetPath,
        //        Arguments = shortcut.Arguments,
        //        WorkDir = shortcut.WorkingDirectory,
        //    };
        //}
    }
}
